package com.lnsoft.cac.server.handle.codec.frameMessage;


import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import lombok.Data;
import lombok.NonNull;

import static com.lnsoft.cac.server.handle.codec.frameMessage.Util.byteArrToString;

@Data
/**
 * 配置/状态交互---装置ID查询设置
 * */
public class Cfg_ID_Cfm {
    private int Command_Status;                     //1byte         数据发送状态：①0xFF成功②0x00失败
    private String Original_ID;                     //17byte        原始生产编号


//    public ByteBuf toByteBuf() throws Exception{
//        if (Command_Status != (byte)0xFF && Command_Status != (byte)0x00) {
//            throw new Exception("数据发送状态 设置异常");
//        }
//        if (Original_ID == null) {
//            Original_ID = new byte[17];
//        }
//        if (Original_ID.length != 17) {
//            throw new Exception("原始生产编号 设置异常");
//        }
//        ByteBuf bf = Unpooled.buffer(18);
//        bf.writeByte(Command_Status);
//        bf.writeBytes(Original_ID);
//        return bf;
//    }


    //  解析 { 配置/状态交互---装置ID查询设置 -- 确认} 帧报文内容区 到消息体中
    public static Cfg_ID_Cfm decFrameBody(@NonNull byte[] frameBody) throws Exception {
        ByteBuf bf = Unpooled.wrappedBuffer(frameBody);
        Cfg_ID_Cfm msg = new Cfg_ID_Cfm();
        int len = frameBody.length;
        if (len == 0) {
            return null;
        }
        msg.setCommand_Status(bf.getByte(0) & 0xFF);
        byte[] Original_ID = new byte[17];
        bf.getBytes(1, Original_ID);
        String id = byteArrToString(Original_ID).trim();
        if (id == null) {
            id = "";
        }
        msg.setOriginal_ID(id);
        return msg;
    }

}
